package com.potenzacd.project.controller;


import com.potenzacd.project.entity.Result;
import com.potenzacd.project.entity.StatusCode;
import com.potenzacd.project.pojo.PdInfoReqsModule;
import com.potenzacd.project.pojo.ProductApprovalInfo;
import com.potenzacd.project.pojo.ProductInfo;
import com.potenzacd.project.service.impl.PdInfoReqsModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author Cuidongdong
 * @since 2021-01-26
 */
@RestController
@CrossOrigin
@RequestMapping("/project/pd-info-reqs-module")
public class PdInfoReqsModuleRestController {
    @Autowired
    private PdInfoReqsModuleService pdInfoReqsModuleService;
    /**
     * 产品功能需求模块存为草稿(创建)
     * @param productInfo 要保存的信息
     */
    @PostMapping("/save4Draft")
    public Result save4Draft(@RequestBody ProductInfo productInfo){
        pdInfoReqsModuleService.save4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块存为草稿成功",null);
    }


    /**
     * 产品功能需求模块提交审核(创建)
     * @param productInfo 要提交审核的信息
     */
    @PostMapping("/save4Approval")
    public Result save4Approval(@RequestBody ProductInfo productInfo){
        pdInfoReqsModuleService.save4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块提交审核成功",null);
    }


    /**
     * 产品功能需求模块存为草稿(修改)
     * @param productInfo 要修改的信息
     */
    @PostMapping("/edit4Draft")
    public Result edit4Draft(@RequestBody ProductInfo productInfo){
        pdInfoReqsModuleService.edit4Draft(productInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块存为草稿时修改成功",null);
    }


    /**
     * 产品功能需求模块提交审核(修改)
     * @param productInfo 要提交审核的信息
     */
    @PostMapping("/edit4Approval")
    public Result edit4Approval(@RequestBody ProductInfo productInfo){
        pdInfoReqsModuleService.edit4Approval(productInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块提交审核修改成功",null);
    }


//    /**
//     * 产品功能需求提交审核(修订)
//     * @param pdInfoReqs  要提交审核的信息
//     */
//    public void revise(PdInfoReqs pdInfoReqs);

    /**
     * 产品功能需求模块审核通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/pass")
    public Result  pass(@RequestBody ProductApprovalInfo productApprovalInfo){
        pdInfoReqsModuleService.pass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块审核通过成功",null);
    }


    /**
     * 产品功能需求模块审核不通过
     * @param productApprovalInfo 审核记录
     */
    @PostMapping("/notPass")
    public Result  notPass(@RequestBody ProductApprovalInfo productApprovalInfo){
        pdInfoReqsModuleService.notPass(productApprovalInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块审核不通过成功",null);
    }


    /**
     * 产品功能需求模块再次审核
     * 审核失败之后,进行信息的修订,之后提交审核
     * @param productInfo 要审核的信息
     */
    @PostMapping("/revise")
    public Result revise (@RequestBody ProductInfo productInfo){
        pdInfoReqsModuleService.revise(productInfo);
        return new Result(true, StatusCode.OK,"产品功能需求模块再次审核成功",null);
    }


    /**
     * 产品功能需求模块作废
     * @param code 要作废的信息标识
     */
    @PostMapping("/abort/{code}")
    public Result abort(@PathVariable String code){
        pdInfoReqsModuleService.abort(code);
        return new Result(true, StatusCode.OK,"产品功能需求模块作废成功",null);
    }


    /**
     * 产品功能需求模块查看详情
     * @param code 要查看的标识
     * @return 详情信息
     */
    @PostMapping("/detail/{code}")
    public Result detail(@PathVariable String code){
        PdInfoReqsModule detail = pdInfoReqsModuleService.detail(code);
        return new Result(true, StatusCode.OK,"产品功能需求模块作废成功",detail);
    }
}

